package com.lingnan.wanxiangxinxun.entity.po;

import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import java.time.LocalDateTime;
import java.io.Serializable;
import java.util.Objects;

import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.Data;
import lombok.experimental.Accessors;

/**
 * <p>
 * 新闻表
 * </p>
 *
 * @author swl
 * @since 2025-03-13
 */
@Data
//@EqualsAndHashCode(callSuper = false)
@Accessors(chain = true)
@TableName("news")
public class News implements Serializable {

    private static final long serialVersionUID = 1L;

    /**
     * 新闻id
     */
    @TableId(value = "id", type = IdType.AUTO)
    private Integer id;

    /**
     * 新闻标题
     */
    private String title;

    /**
     * 封面图片
     */
    private String frontCover;

    /**
     * 新闻内容
     */
    private String content;

    /**
     * 浏览次数
     */
    private Integer viewsNum;

    /**
     * 点赞数量
     */
    private Integer likeNum;

    /**
     * 收藏数量
     */
    private Integer favoriteNum;

    /**
     * 新闻分类id
     */
    private Integer categoryId;

    /**
     * 作者id
     */
    private Integer authorId;

    /**
     * 审核员id
     */
    private Integer checkerId;

    /**
     * 稿件退回原因
     */
    private String rejectReason;

    /**
     * 状态(0待审,1已发布,2撤回)
     */
    private Integer status;

    /**
     * 发布时间
     */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private LocalDateTime publishTime;

    /**
     * 创建时间
     */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private LocalDateTime createTime;

    /**
     * 更新时间
     */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private LocalDateTime updateTime;


    @TableField(exist = false) //表示该字段不是数据库字段
    private Boolean isLike; //判断该用户是否点赞了该篇文章

    @TableField(exist = false)
    private Boolean isFavorite; //判断该用户是否收藏了该篇文章



    @Override
    public boolean equals(Object o) {
        if (this == o) return true;
        if (o == null || getClass() != o.getClass()) return false;
        News n = (News) o;
        return Objects.equals(id, n.id);
    }

    @Override
    public int hashCode() {
        return Objects.hash(id);
    }
}
